home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / G-Games / (c)gd.d64 / galactic empir.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  18KB  |  534 lines

  1. 10 REM " ***                                ***
  2. 11 [143] " *** CHR$ALACTIC VALMPIRE !              ***
  3. 12 REM " ***                                ***
  4. 13 [143] " *** BY (null)AUL (null)ELLAM                 ***
  5. 14 REM " ***   105 [212]UTELA [200]EIGHTS [210]OAD      ***
  6. 15 [143] " ***   PEEKRANTFORD, (null)NTARIO           ***
  7. 16 REM " ***   [206]3[212] 1[193]4                      ***
  8. 17 [143] " ***                                ***
  9. 18 REM " *** [195]REDITS :                      ***
  10. 19 [143] " ***  - VALNTERPRISE SPRITES BY ???   ***
  11. 20 REM " ***     (FROM [212][208][213][199] DISK [196]4)        ***
  12. 21 [143] " ***  - RIGHT$DEA FROM A SIMILAR ATN(null)(null)(null)VAL   ***
  13. 22 REM " ***    GAME BY                     ***
  14. 23 [143] " ***      (null)RSINE VALNGINEERING &      ***
  15. 24 REM " ***      [208]OWERSOFT [201]NC.            ***
  16. 25 [143] " ***                                ***
  17. 95 REM" --- [204]INES 40000-40010 FOR COLOURS  ---
  18. 96 [143]"
  19. 100 S=54272:FOR A=S TO S+24:POKE A,0:NEXT:V=53248:POKE V+21,0
  20. 110 DIM WL$(40),WL%(40),LF%(10),HF%(10),DO$(20)
  21. 120 FOR A=1 TO 20:WL$(A)=CHR$(64+A):WL%(A)=A:NEXT
  22. 130 FOR A=21 TO 40:WL$(A)=CHR$(172+A):WL%(A)=44+A:NEXT
  23. 140 FOR A=0 TO 10:READ PC%(A),PC$(A):NEXT
  24. 150 POKE 53280,6:POKE 53281,15:PRINTCHR$(8)"[147]"
  25. 160 OPEN 2,8,2,"GE.ENTERPRISE.C,S,R"
  26. 170 FOR N=0 TO 62:INPUT#2,Q:POKE704+N,Q:NEXT
  27. 180 FOR N=0 TO 191:INPUT#2,Q:POKE832+N,Q:NEXT
  28. 190 CLOSE2
  29. 200 FOR A=0 TO 10:READ LF%(A),HF%(A):NEXT
  30. 210 DO$(0)="":FOR A=1 TO 20:DO$(A)=DO$(A-1)+"":NEXT
  31. 220 DEFFNDS(A)=SQR((WX%(P)-WX%(A))^2+(WY%(P)-WY%(A))^2)
  32. 230 D1$=PC$(0)+""
  33. 240 D2$=D1$+"":D3$=D2$+""
  34. 250 PN$(0)="[205]E !"
  35. 990 GOTO 20000
  36. 1000 REM $$$                        $$$
  37. 1001 REM $$$ SOUNDS                 $$$
  38. 1002 REM $$$                        $$$
  39. 1100 REM ***                        ***
  40. 1101 REM *** ATTACKER'S FIRE        ***
  41. 1102 REM ***                        ***
  42. 1110 POKE S+5, 9:POKE S+6,20 :POKE S+24,15:POKE S+1,3 :POKE S,200
  43. 1120 POKE S+4,33:FOR TM=1 TO 100:NEXT:POKE S+4,0
  44. 1130 RETURN
  45. 1200 REM ***                        ***
  46. 1201 REM *** DEFENDER'S FIRE        ***
  47. 1202 REM ***                        ***
  48. 1210 POKE S+5, 9:POKE S+6,20 :POKE S+24,10:POKE S+1,10:POKE S,200
  49. 1215 POKE S+2,16:POKE S+3,4
  50. 1220 POKE S+4,33:FOR TM=1 TO 100:NEXT:POKE S+4,0
  51. 1230 RETURN
  52. 1300 REM ***                        ***
  53. 1301 REM *** EXPLOSION OF HIT       ***
  54. 1302 REM ***                        ***
  55. 1310 POKE S+5,9:POKE S+6,0:POKE S+24,10:POKE S+1,40:POKE S,200
  56. 1320 POKE S+4,129:FOR TM=1 TO 100:NEXT:POKE S+4,0
  57. 1330 RETURN
  58. 1600 REM ***                        ***
  59. 1601 REM *** INPUT MISTAKE          ***
  60. 1602 REM ***                        ***
  61. 1610 POKE S+5,41:POKE S+6,249:POKE S+24,10:POKE S+1,15:POKE S,200
  62. 1615 FOR NT=1 TO 2
  63. 1620 FOR LP=1 TO 40 STEP 2:POKE S+4,33:POKES+4,32
  64. 1625 IF LP<21 THEN POKE S+1,15+LP:GOTO 1627
  65. 1626 POKE S+1,55-LP
  66. 1627 NEXT:POKE S+1,20:NEXT:POKES+4,0
  67. 1630 RETURN
  68. 1700 REM ***                        ***
  69. 1701 REM *** BATTLE STATIONS        ***
  70. 1702 REM ***                        ***
  71. 1710 POKE S+5,41:POKE S+6,249:POKE S+24,12:POKE S+1,20:POKE S,200
  72. 1715 FOR NT=1 TO 4
  73. 1720 FOR LP=1 TO 40:POKE S+4,33
  74. 1725 POKE S+1,20+LP
  75. 1730 NEXT:POKE S+1,20:NEXT:POKE S+4,0
  76. 1740 RETURN
  77. 1800 REM ***                        ***
  78. 1801 REM *** TELETYPE (1 PING)      ***
  79. 1802 REM ***                        ***
  80. 1810 POKE S+5,21:POKE S+6,0:POKE S+24,15:POKE S+1,7 :POKE S,50
  81. 1811 POKE S+12,21:POKE S+13,0:POKE S+8,100:POKE S+7,50
  82. 1815 POKE S+2,0:POKE S+3,15
  83. 1820 POKE S+4,65:POKE S+11,129:FOR TM=1 TO 50:NEXT:POKE S+4,0:POKE S+11,0:RETURN
  84. 2000 REM ***                        ***
  85. 2001 REM *** WORLD CHARACTER INPUT  ***
  86. 2002 REM ***                        ***
  87. 2010 WAIT 198,1:GET IN$
  88. 2020 IF IN$="?" OR IN$=CHR$(13) THEN RETURN
  89. 2030 IF ASC(IN$)>64 AND ASC(IN$)<85 THEN U=ASC(IN$)-64:RETURN
  90. 2040 IF ASC(IN$)>192 AND ASC(IN$)<213 THEN U=ASC(IN$)-172:RETURN
  91. 2050 U=-1:RETURN
  92. 2100 REM ***                        ***
  93. 2101 REM *** NUMERICAL INPUT        ***
  94. 2102 REM ***                        ***
  95. 2110 U=0
  96. 2120 GET IN$:IF IN$=""THEN 2120
  97. 2130 IF IN$="?" OR IN$=CHR$(13) THEN RETURN
  98. 2140 IF ASC(IN$)>47 AND ASC(IN$)<58 THEN U=10*U+ASC(IN$)-48:GOTO 2120
  99. 2160 U=-1:RETURN
  100. 3000 REM ***                        ***
  101. 3001 REM *** PLAYER'S INPUT         ***
  102. 3002 REM ***                        ***
  103. 3030 W=1
  104. 3040 IF WC%(W)=P THEN 3100
  105. 3050 W=W+1:IF W<=WN THEN 3040
  106. 3060 PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)D2$"CONTROLS NO WORLDS"
  107. 3070 GOSUB 1600:FOR TM=1 TO 1000:NEXT:GOSUB 30950:RETURN
  108. 3100 PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)PC$(0)":"D2$"[207]RIGIN OF FLEET ?"
  109. 3110 GOSUB 2000
  110. 3120 IF IN$="?" THEN GOSUB 9000:GOTO 3000
  111. 3130 IF IN$=CHR$(13) THEN GOSUB 30950:RETURN
  112. 3135 IF U<0 THEN 3215
  113. 3140 IF WC%(U)=P THEN 3180
  114. 3160 PRINTD3$"[212]HAT'S NOT YOURS!":GOSUB 1600:GOSUB 30950:GOTO 3100
  115. 3180 WR=U:PRINTD2$"[196]ESTINATION ?    "
  116. 3190 GOSUB 2000
  117. 3200 IF IN$="?" THEN GOSUB 9000:GOTO 3000
  118. 3210 IF IN$=CHR$(13) THEN GOSUB 30950:GOTO 3100
  119. 3215 IF U<0 THEN PRINTD3$"[201]NVALID [193]NSWER!":GOSUB 1600:GOSUB 30950:GOTO 3100
  120. 3220 WD=U:PRINTD2$"# OF SHIPS ? "
  121. 3230 GOSUB 2100
  122. 3240 IF IN$="?" THEN GOSUB 9000:GOTO 3000
  123. 3250 IF U<0 THEN 3215
  124. 3260 IF U=0 THEN GOSUB 30950:GOTO 3100
  125. 3265 IF U>WS%(WR) THEN PRINTD3$"[206]OT ENOUGH THERE!":GOSUB 1600:GOSUB 30950:GOTO 3100
  126. 3270 GOSUB 30950:FM=U:GOSUB 4000
  127. 3280 IF F<=100 THEN 3100
  128. 3999 RETURN
  129. 4000 REM ***                        ***
  130. 4001 REM *** TRANSFER SHIPS FROM    ***
  131. 4002 REM *** WORLD TO FLEET         ***
  132. 4003 REM ***                        ***
  133. 4010 F=1
  134. 4020 IF FC%(F)<>0 THEN 4050
  135. 4030 WS%(WR)=WS%(WR)-FM:FC%(F)=P:FD%(F)=WD:FS%(F)=FM
  136. 4040 Z=P:P=WR:FT%(F)=T+(FNDS(WD)+.99)/3:P=Z:RETURN
  137. 4050 F=F+1:IF F<=100 THEN 4020
  138. 4060 PRINTD1$"[215]ORKER'S STRIKE"D2$"HALTS ALL FLEET"D3$"LAUNCHES !":GOSUB 1600
  139. 4070 GOSUB 30950:P%(0)=PN:RETURN
  140. 5000 REM ***                        ***
  141. 5001 REM *** ARRIVAL OF FLEET       ***
  142. 5002 REM ***                        ***
  143. 5010 W=FD%(F):DE=WS%(W):AK=FS%(F)
  144. 5012 PS=983+40*WY%(W)+WX%(W)
  145. 5014 FOR I=1 TO 10
  146. 5016 POKE PS,PEEK(PS)+128
  147. 5018 POKE PS,PEEK(PS)-128
  148. 5019 NEXT
  149. 5020 IF FC%(F)=WC%(W) THEN 5400
  150. 5100 REM ***                        ***
  151. 5101 REM *** ATTACK                 ***
  152. 5102 REM ***                        ***
  153. 5110 PRINTD1$;:CC$="[193]TTACK ON WORLD "+WL$(W)+"!":GOSUB 5900:GOSUB 1700
  154. 5120 PRINTD2$;:CC$="[196]EFENDER: ":GOSUB 5900:PRINTPC$(WC%(W));:CC$=PN$(WC%(W)):GOSUB 5900
  155. 5130 PRINTD3$;:CC$="[193]TTACKER: ":GOSUB 5900:PRINTPC$(FC%(F));:CC$=PN$(FC%(F)):GOSUB 5900
  156. 5140 PRINTD2$"S: ";:W2=W:GOSUB 30910:PRINT"   "
  157. 5150 PRINTD3$"S: ";:W2=0:WS%(W2)=AK:GOSUB 30910:PRINT"   "
  158. 5155 IF DE=0 THEN GOSUB 5700:GOTO 5300
  159. 5160 I=0:REM DEFENDER FIRES
  160. 5170 I=I+1:GOSUB 1200
  161. 5180 IF RND(0)>G1*AK/(AK+DE)+G2 THEN 5200
  162. 5190 GOSUB 1300:AK=AK-1:PRINTD3$"";:W2=0:WS%(0)=AK:GOSUB 30910
  163. 5200 IF AK=0 THEN GOSUB 5800:GOTO 5300
  164. 5210 IF I<DE THEN 5170
  165. 5220 I=0:REM ATTACKER FIRES
  166. 5230 I=I+1:GOSUB 1100
  167. 5240 IF RND(0)>G1*DE/(AK+DE)+G2 THEN 5260
  168. 5250 GOSUB 1300:DE=DE-1:PRINTD2$"";:W2=0:WS%(0)=DE:GOSUB 30910
  169. 5260 IF DE=0 THEN GOSUB 5600:GOTO 5300
  170. 5270 IF I<AK THEN 5230
  171. 5280 GOTO 5160
  172. 5300 FC%(F)=0:GOSUB 30950:RETURN
  173. 5400 REM ***                        ***
  174. 5401 REM *** REINFORCEMENTS         ***
  175. 5402 REM ***                        ***
  176. 5410 PRINTD1$;:CC$="[215]ORLD "+WL$(W)+":":GOSUB 5900
  177. 5420 CC$=MID$(STR$(AK),2)+" REINFORCEMENT":IF AK>1 THEN CC$=CC$+"S"
  178. 5425 PRINTD2$;:GOSUB 5900
  179. 5430 CC$="HAVE ARRIVED":IF AK=1 THEN CC$="HAS ARRIVED"
  180. 5435 PRINTD3$;:GOSUB 5900
  181. 5440 WS%(W)=DE+AK:W2=W:PRINTDO$(W-20*INT(W/21))SPC(25+10*INT(W/21));:GOSUB 30910
  182. 5450 GOTO 5300
  183. 5600 REM ***                        ***
  184. 5601 REM *** OUTCOME MESSAGES       ***
  185. 5602 REM ***                        ***
  186. 5610 GOSUB 30950
  187. 5620 PRINTD1$;:CC$="[212]HE ATTACKERS WON!":GOSUB 5900
  188. 5630 WC%(W)=FC%(F):WS%(W)=AK:POKE 55255+40*WY%(W)+WX%(W),PC%(WC%(W))
  189. 5640 PRINTDO$(W-20*INT(W/21))SPC(21+10*INT(W/21))PC$(WC%(W))WL$(W)PC$(0);
  190. 5650 W2=W:GOSUB 30900:RETURN
  191. 5700 GOSUB 30950
  192. 5710 PRINTD1$;:CC$="[212]HE ATTACKERS WON":GOSUB 5900:PRINTD2$;
  193. 5720 CC$="WITHOUT A FIGHT !":GOSUB 5900:GOTO 5630
  194. 5800 GOSUB 30950
  195. 5810 PRINTD1$;:CC$="[212]HE DEFENDERS":GOSUB 5900:PRINTD2$;:CC$="SURVIVED THE":GOSUB 5900
  196. 5820 PRINTD3$;:CC$="ATTACK!":GOSUB 5900:WS%(W)=DE:IF WC%(W)<>0 THEN GOTO 5640
  197. 5830 RETURN
  198. 5900 REM ***                        ***
  199. 5901 REM *** TAP OUT MESSAGE        ***
  200. 5902 REM ***                        ***
  201. 5910 FOR LP=1 TO LEN(CC$)
  202. 5915 PRINTMID$(CC$,LP,1);:GOSUB 1800
  203. 5920 NEXT:RETURN
  204. 6000 REM ***                        ***
  205. 6001 REM *** BUILD SHIPS            ***
  206. 6002 REM ***                        ***
  207. 6010 FOR W2=1 TO WN
  208. 6020 IF AB=0 AND WC%(W2)=0 THEN 6100
  209. 6030 WS%(W2)=WS%(W2)+WI%(W2)
  210. 6040 IFWC%(W2)>0THENPRINTDO$(W2-20*INT(W2/21))SPC(25+10*INT(W2/21))PC$(0);:GOSUB30910
  211. 6100 NEXT W2:RETURN
  212. 7000 REM ***                        ***
  213. 7001 REM *** MOVE FLEETS            ***
  214. 7002 REM ***                        ***
  215. 7010 FOR F=1 TO 100
  216. 7020 IF FC%(F)=0 THEN 7040
  217. 7030 IF FT%(F)<T THEN GOSUB 5000
  218. 7040 NEXT F:RETURN
  219. 9000 REM ***                        ***
  220. 9001 REM *** HELP & UTILITY OPTIONS ***
  221. 9002 REM ***                        ***
  222. 9010 PRINTPC$(3)"[147]        [200]ELP / [213]TILITY OPTIONS"
  223. 9020 PRINT"        [162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"
  224. 9030 PRINTPC$(1)"    C[157]E[157]G[157]Q[157]R"
  225. 9040 PRINTPC$(0)TAB(6)"- [195]HANGE THE # OF TURNS"
  226. 9050 PRINTTAB(6)"- [197]ND THE GAME (FOR EVERYONE)"
  227. 9060 PRINTTAB(6)"- [199]O BACK TO PLAYING THE GAME"
  228. 9070 PRINTTAB(6)"- [209]UIT THE GAME (1 PERSON)"
  229. 9080 PRINTTAB(6)"- [210]EVIEW THE INSTRUCTIONS"
  230. 9090 PRINTPC$(3)"       [215]HICH OPTION DO YOU WANT ?"
  231. 9095 WAIT 198,1:GET IN$
  232. 9100 IF IN$="E" THEN GOSUB 10000:END
  233. 9110 IF IN$="R" THEN GOSUB 27000:GOTO 9000
  234. 9120 IF IN$="Q" THEN GOSUB 9200:RETURN
  235. 9130 IF IN$="G" THEN GOSUB 30000:RETURN
  236. 9140 IF IN$="C" THEN GOSUB 9300:GOTO 9000
  237. 9150 GOSUB 1600:GOTO 9000
  238. 9200 FOR F=1 TO 100:IF FC%(F)=P THEN FC%(F)=0
  239. 9210 NEXT
  240. 9220 FOR W=1 TO WN:IF WC%(W)=P THEN WC%(W)=0
  241. 9230 NEXT:RETURN
  242. 9300 PRINTPC$(0)"[147][201]T IS NOW YEAR"T
  243. 9310 PRINT"[212]HERE WERE TO HAVE BEEN"TN" YEARS IN":PRINT"TOTAL."
  244. 9320 PRINTPC$(3)"[200]OW MANY YEARS DO YOU WANT NOW"
  245. 9330 PRINT"("MID$(STR$(T+1),2)"-100)   99[157][157][157][157]";:INPUT TT
  246. 9340 IF TT<T+1 OR TT>100 THEN GOSUB 1600:GOTO 9300
  247. 9350 TN=TT:RETURN
  248. 9999 RETURN
  249. 10000 REM ***                       ***
  250. 10001 REM *** END OF GAME           ***
  251. 10002 REM ***                       ***
  252. 10010 PRINTPC$(3)"[147] [198]INAL STATISTICS :"
  253. 10020 PRINT" [162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"
  254. 10025 PRINTPC$(0)" [193]DMIRAL     # OF WORLDS # OF SHIPS"
  255. 10026 PRINT"[162][162][162][162][162][162][162][162][162]    [162][162][162][162][162][162][162][162][162][162][162] [162][162][162][162][162][162][162][162][162][162]"
  256. 10030 N=0:N2=0:FOR P=1 TO PN:U=0:S=0
  257. 10040 FOR W=1 TO WN:IF WC%(W)=P THEN U=U+1:S=S+WS%(W)
  258. 10050 NEXT W
  259. 10060 FOR F=1 TO 100:IF FC%(F)=P THEN S=S+FS%(F)
  260. 10070 NEXT F
  261. 10080 PRINTPC$(P);PN$(P);TAB(16);PC$(0);U;TAB(27);S
  262. 10090 IF U>N THEN N=U:N2=0
  263. 10100 IF U=N THEN N2=N2+1
  264. 10110 NEXT P
  265. 10120 IF PN=1 THEN 10400
  266. 10130 N3=0:PRINT"";:IF N2>1 THEN PRINTPC$(3)"[212]HERE IS A"N2"-WAY TIE!"
  267. 10140 PRINTPC$(0)"[195]ONGRATULATIONS TO [193]DMIRAL";:IF N2>1 THEN PRINT"S";
  268. 10150 FOR P=1 TO PN:U=0
  269. 10160 FOR W=1 TO WN:IF WC%(W)=P THEN U=U+1
  270. 10170 NEXTW
  271. 10180 IFU=NTHENPRINTTAB(28)PC$(P)PN$(P);:N3=N3+1:IFN3>1 THEN PRINTTAB(24)PC$(0)"AND";
  272. 10190 IF U=N THEN PRINT
  273. 10195 NEXT P
  274. 10200 PRINTPC$(3)"[193]NOTHER GAME (Y/N) ?"
  275. 10210 WAIT 198,1:GET IN$
  276. 10220 IF IN$="Y" THEN PRINT"[147]":RUN
  277. 10230 IF IN$<>"N" THEN GOSUB 1600:GOTO 10210
  278. 10240 PRINT"[147][199]OOD-BYE !"CHR$(9):RETURN
  279. 10400 IF U=WN THEN PRINT"[195]ONGRATULATIONS! [217]OU HAVE SUCCEEDED!":GOTO 10200
  280. 10410 PRINT"[201]'M GLAD YOU LOST...YOU DESERVED IT!":GOTO 10200
  281. 10999 RETURN
  282. 20000 REM ***                       ***
  283. 20001 REM *** MAIN PROGRAM          ***
  284. 20002 REM ***                       ***
  285. 20010 GOSUB 21000:GOSUB 22000
  286. 20020 PRINTCHR$(14)PC$(3)"[147][196]O YOU WANT TO SEE THE RULES (Y/N) ?"
  287. 20030 WAIT 198,1:GET IN$
  288. 20040 IF IN$="Y" THEN 20120
  289. 20050 IF IN$="N" THEN 20130
  290. 20060 GOSUB 1600:GOTO 20030
  291. 20120 GOSUB 27000
  292. 20130 GOSUB 28000
  293. 20140 GOSUB 29000
  294. 20150 GOSUB 31000:GOSUB 33000:GOSUB 34000
  295. 20180 T=0:GOSUB 30000
  296. 20190 PRINTD1$"[215]OULD YOU LIKE A"
  297. 20200 PRINTD2$"DIFFERENT MAP ?"
  298. 20210 WAIT 198,1:GET IN$
  299. 20220 IF IN$="Y" THEN GOSUB 30950:PRINTD1$"[208]LEASE WAIT...":GOTO 20140
  300. 20230 IF IN$<>"N" THEN GOSUB 1600:GOTO 20210
  301. 20240 GOSUB 30950
  302. 20250 REM ***                       ***
  303. 20251 REM *** BEGINNING OF GAME     ***
  304. 20252 REM ***                       ***
  305. 20260 T=0
  306. 20265 FOR P=0 TO PN:P%(P)=0:NEXT
  307. 20270 P=INT(PN*RND(0)+1):IF P%(P)=1 THEN 20270
  308. 20275 P%(P)=1:P%(0)=P%(0)+1
  309. 20280 GOSUB 3000
  310. 20290 IF P%(0)<PN THEN 20270
  311. 20300 T=T+1:PRINTD3$""T"":GOSUB 6000
  312. 20310 GOSUB 7000
  313. 20320 FOR W=1 TO WN:W2%(W)=WS%(W):NEXT
  314. 20340 IF T<TN THEN 20265
  315. 20350 GOSUB 10000
  316. 20360 END
  317. 21000 REM ***                       ***
  318. 21001 REM *** INTRODUCTION          ***
  319. 21002 REM ***                       ***
  320. 21010 PRINTCHR$(142)PC$(0)"[147]  WELCOME TO THE GAME OF"
  321. 21020 PRINTPC$(9)" [169]  [223][169]  [223] [169]  [223][169]  [223]        [169]  [223]"
  322. 21030 PRINT"  [162]      [162]   [162]"
  323. 21040 PRINT"               "
  324. 21050 PRINT"  [162]       [146][162]   [146][162]"
  325. 21060 PRINT" [223]  [146][169]        [146] [223]  [146][169]       [146][223]  [146][169]"
  326. 21070 PRINT"           [223][146] [169]    [223]      [223]    "
  327. 21080 PRINT"        [146][223] [146][169]       "
  328. 21090 PRINT"              [146][169]    [146][169]   "
  329. 21100 PRINT"            [146][223][223] "
  330. 21110 PRINT"                 [146][223][223]    "
  331. 21111 PRINTPC$(3)"             BY PAUL KELLAM"
  332. 21114 POKE S+12,96:POKE S+13,0
  333. 21115 POKE S+5,9:POKE S+6,0:POKE S+24,15:GOSUB 39000
  334. 21120 V=53248:POKEV+16,0:POKEV+23,0:POKEV+29,0:POKEV+39,11:POKEV+40,11:POKEV+41,12:POKEV+42,12
  335. 21130 POKEV+21,15:POKE2040,11:POKE2041,13:POKE2042,14:POKE2043,15
  336. 21140 X=-1:X2=23:FOR X1=0 TO 320:X=X+1:X2=X2+1
  337. 21150 Y=150+70*SIN((null)*X1/115)
  338. 21160 POKEV,X:POKEV+4,X:POKEV+2,X2:POKEV+6,X2
  339. 21170 POKEV+1,Y:POKEV+5,Y:POKEV+3,Y:POKEV+7,Y
  340. 21174 IF X2=255 THEN X2=-1:POKEV+16,10
  341. 21175 IF X1=255 THEN POKE V+16,15:X=-1
  342. 21180 IF TI>T THEN GOSUB 39000
  343. 21190 NEXT:POKEV+21,0:POKE S+4,0
  344. 21200 RETURN
  345. 22000 REM ***                       ***
  346. 22001 REM *** INITIALIZE VARIABLES  ***
  347. 22002 REM ***                       ***
  348. 22010 P=1:G1=.8:G2=.03
  349. 23000 REM ***                       ***
  350. 23001 REM *** DIMENSION ARRAYS      ***
  351. 23002 REM ***                       ***
  352. 23010 DIM WS%(40),WC%(40),WX%(40),WY%(40),WI%(40),W2%(40)
  353. 23020 DIM FS%(100),FD%(100),FC%(100),FT%(100),P%(20)
  354. 23030 RETURN
  355. 27000 REM ***                       ***
  356. 27001 REM *** INSTRUCTIONS          ***
  357. 27002 REM ***                       ***
  358. 27010 PRINT"[147]"SPC(14)PC$(1)"[201]NSTRUCTIONS"
  359. 27020 PRINTSPC(14)"[192][192][192][192][192][192][192][192][192][192][192][192]"
  360. 27030 PRINTPC$(3)"[212]HE OBJECT OF THIS GAME IS TO CONTROL"
  361. 27040 PRINT"MORE PLANETS BY THE END OF THE GAME THAN"
  362. 27050 PRINT"ANY OF YOUR OPPONENTS.  [212]O DO THIS, YOU"
  363. 27060 PRINT"SEND OUT FLEETS OF SHIPS TO OTHER STARS"
  364. 27070 PRINT"(EACH OF WHICH HAS 1 HABITABLE, AND"
  365. 27080 PRINT"PERHAPS OCCUPIED, PLANET).  [217]OUR HOME"
  366. 27090 PRINT"WORLD HAS AN INDUSTRIAL CAPACITY OF 10"
  367. 27100 PRINT"SHIPS PER YEAR.  [212]HE WORLDS YOU ATTACK"
  368. 27110 PRINT"MAY HAVE INDUSTRIAL CAPACITY AND SHIPS"
  369. 27120 PRINT"ON DEFENSE."
  370. 27130 PRINTPC$(0)"      [208]RESS ANY KEY TO CONTINUE."
  371. 27140 WAIT 198,1:POKE 198,0
  372. 27150 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
  373. 27160 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  374. 27170 PRINTPC$(3)"[207]RDERS FOR LAUNCHING FLEETS REQUIRE 3"
  375. 27180 PRINT"PIECES OF DATA :"
  376. 27190 PRINTPC$(0)" 1. [208]LANET OF ORIGIN (BY CODE)"
  377. 27200 PRINT" 2. [196]ESTINATION"
  378. 27210 PRINT" 3. # OF SHIPS IN FLEET"
  379. 27220 PRINTPC$(3)"[217]OUR FLEET ORDERS WILL BE INVISIBLE AS"
  380. 27230 PRINT"YOU ENTER THEM TO PROTECT YOUR SECRECY."
  381. 27240 PRINT"[208]RESS "PC$(1)"[210]ETURN"PC$(3)" WHEN YOU ARE FINISHED"
  382. 27250 PRINT"ENTERING ORDERS.  [198]OR HELP, TYPE A '?'."
  383. 27260 PRINTPC$(0)"      [208]RESS ANY KEY TO CONTINUE."
  384. 27270 WAIT 198,1:POKE 198,0
  385. 27280 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
  386. 27290 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  387. 27300 PRINTPC$(3)"[198]LEETS TRAVEL AT A SPEED OF 3 PER YEAR"
  388. 27310 PRINT"(1 TURN=1 YEAR) AFTER ONE ACCELERATION"
  389. 27320 PRINT"YEAR IN WHICH THEY MOVE ONLY 2."
  390. 27330 PRINT"[211]EPARATE FLEETS ATTACK SEPARATELY, EVEN"
  391. 27340 PRINT"IF THEY ARRIVE AT THE SAME WORLD IN THE"
  392. 27350 PRINT"SAME YEAR.  [207]NCE A FLEET HAS BEEN"
  393. 27360 PRINT"LAUNCHED, ITS ORDERS CANNOT BE CHANGED."
  394. 27370 PRINT"[208]LAYERS WILL MOVE IN A RANDOM ORDER EACH"
  395. 27380 PRINT"TURN."
  396. 27390 PRINTPC$(0)"      [208]RESS ANY KEY TO CONTINUE."
  397. 27400 WAIT 198,1:POKE 198,0
  398. 27410 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
  399. 27420 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  400. 27430 PRINTPC$(3)"[212]O PLAY SOLITAIRE, MAKE THE NUMBER OF"
  401. 27440 PRINT"YEARS EQUAL TO THE NUMBER OF WORLDS."
  402. 27450 PRINT"[212]O WIN, YOU MUST CONTROL ALL PLANETS BY"
  403. 27460 PRINT"THE END OF THE GAME."
  404. 27470 PRINT"               "PC$(2)"[199]OOD [204]UCK !"
  405. 27480 PRINTPC$(0)"      [208]RESS ANY KEY TO CONTINUE."
  406. 27490 WAIT 198,1:POKE 198,0
  407. 27500 RETURN
  408. 28000 REM ***                       ***
  409. 28001 REM *** PLAYER INPUT (SETUP)  ***
  410. 28002 REM ***                       ***
  411. 28010 PRINTPC$(3)CHR$(14):INPUT"[147][200]OW MANY PLAYERS (1-10)   2[157][157][157]";PN
  412. 28020 IF PN<1 OR PN>10 THEN GOSUB 1600:GOTO 28010
  413. 28030 PN=INT(PN)
  414. 28040 FOR A=1 TO PN
  415. 28050 PRINT"[208]LAYER #";A;"IS   [215]HO[157][157][157][157][157]";:INPUT PN$(A)
  416. 28060 IF LEN(PN$(A))>9 THEN PN$(A)=LEFT$(PN$(A),9)
  417. 28070 NEXT A
  418. 28080 MN=5:IF PN>5 THEN MN=PN
  419. 28090 PRINT"[147][200]OW MANY WORLDS ("MN"-40)   10[157][157][157][157]";:INPUT WN
  420. 28100 IF WN<MN OR WN>40 THEN GOSUB 1600:GOTO 28090
  421. 28110 WN=INT(WN)
  422. 28120 PRINT"[147][200]OW MANY YEARS IN THE GAME (1-100)   1[157][157][157]";:INPUT TN
  423. 28130 IF TN<1 OR TN>100 THEN GOSUB 1600:GOTO 28120
  424. 28140 PRINT"[196]O YOU WANT THE NEUTRAL WORLDS TO BUILD"
  425. 28150 PRINT"DEFENSIVE SHIPS (Y/N) ?"
  426. 28160 WAIT 198,1:GET IN$:IF IN$<>"Y" AND IN$<>"N" THEN GOSUB 1600:GOTO 28160
  427. 28170 AB=0:IF IN$="Y" THEN AB=1
  428. 28180 PRINT"[208]LEASE WAIT..."
  429. 28190 RETURN
  430. 29000 REM ***                       ***
  431. 29001 REM *** GENERATE STARS        ***
  432. 29002 REM ***                       ***
  433. 29010 WX%(1)=1+INT(RND(0)*20)
  434. 29020 WY%(1)=1+INT(RND(0)*20)
  435. 29030 FOR W=2 TO WN
  436. 29040 WX%(W)=1+INT(RND(0)*20)
  437. 29050 WY%(W)=1+INT(RND(0)*20)
  438. 29060 I=1
  439. 29070 IF WX%(W)=WX%(I) AND WY%(W)=WY%(I) THEN 29040
  440. 29080 I=I+1:IF I<W THEN 29070
  441. 29090 NEXT
  442. 29100 RETURN
  443. 30000 REM ***                       ***
  444. 30001 REM *** SCREEN DISPLAY        ***
  445. 30002 REM ***                       ***
  446. 30010 PRINTCHR$(14);PC$(0);"[147][176][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][174][176][192][192][192][192][192][192][192][192][178][178][192][192][192][192][192][192][192][192][174]";
  447. 30020 FORA=1TO18:PRINT"[171][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][179][221]        [221][221]        [221]";:NEXT
  448. 30030 PRINT"[173][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][189][221]        [221][221]        [221]";
  449. 30040 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174][221]        [221][221]        [221]";
  450. 30045 PRINT"[221]                  [221][221]        [221][221]        [221]";
  451. 30050 PRINT"[221]                  [221][173][192][192][192][192][192][192][192][192][177][177][192][192][192][192][192][192][192][192][189]";
  452. 30060 PRINT"[221]                  [221] [217]EAR :"T
  453. 30070 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]";
  454. 30075 PRINTSPC(21)"[215] [208]R [211]HP[215] [208]R [211]HP"
  455. 30080 FOR W2=1 TO WN
  456. 30090 PS=40*WY%(W2)+WX%(W2)
  457. 30100 POKE 983+PS,WL%(W2):POKE 55255+PS,PC%(WC%(W2))
  458. 30110 PRINTDO$(W2-20*INT(W2/21))SPC(21+10*INT(W2/21))PC$(WC%(W2))WL$(W2)"[151]";
  459. 30120 IF WC%(W2)<>0 THEN GOSUB 30900
  460. 30130 NEXT:RETURN
  461. 30900 S$=MID$(STR$(WI%(W2)),2):S$=LEFT$("  ",3-LEN(S$))+S$:PRINTPC$(0);S$;
  462. 30910 S$=MID$(STR$(WS%(W2)),2):S$=LEFT$("   ",4-LEN(S$))+S$:PRINTS$;:RETURN
  463. 30950 REM ***                       ***
  464. 30951 REM *** CLEAR BOX             ***
  465. 30952 REM ***                       ***
  466. 30960 PRINTD1$"                  [221]"D2$"                  [221]"D3$"                  [221]"
  467. 30970 RETURN
  468. 31000 REM ***                       ***
  469. 31001 REM *** WORLD INDUSTRY SETUP  ***
  470. 31002 REM ***                       ***
  471. 31010 FOR P=1 TO PN:WI%(P)=10:NEXT
  472. 31020 IF PN=WN THEN RETURN
  473. 31030 FOR W=PN+1 TO WN
  474. 31040 IF RND(0)<.25 THEN 31070
  475. 31050 WI%(W)=WI%(W)+1
  476. 31060 IF RND(0)<.67 THEN 31050
  477. 31070 NEXT W
  478. 31080 RETURN
  479. 33000 REM ***                       ***
  480. 33001 REM *** WORLD CONTROL SETUP   ***
  481. 33002 REM ***                       ***
  482. 33010 FOR P=1 TO PN:WC%(P)=P:NEXT:RETURN
  483. 34000 REM ***                       ***
  484. 34001 REM *** WORLD SHIP SETUP      ***
  485. 34002 REM ***                       ***
  486. 34005 FC=2+RND(0)
  487. 34010 FOR P=1 TO PN
  488. 34020 WS%(P)=12*WN-15*PN
  489. 34030 FOR I=1 TO PN
  490. 34040 WS%(P)=WS%(P)+300/(FNDS(I)+6)
  491. 34050 NEXT I
  492. 34070 FOR W=PN+1 TO WN
  493. 34080 WS%(P)=WS%(P)-100/(FNDS(W)+3)
  494. 34090 NEXT W
  495. 34100 IF WS%(P)<50 THEN WS%(P)=50
  496. 34110 W2%(P)=WS%(P)
  497. 34120 WS%(P)=FC*WS%(P):NEXT P
  498. 34200 FOR W=PN+1 TO WN
  499. 34210 WS%(W)=WS%(W)+(WI%(W)+2.2)*RND(0)
  500. 34220 IF RND(0)<.67 THEN 34210
  501. 34230 W2%(W)=WS%(W)
  502. 34240 NEXT W
  503. 34250 RETURN
  504. 38999 END
  505. 39000 REM ***                       ***
  506. 39001 REM *** NEXT NOTE IN TUNE     ***
  507. 39002 REM ***                       ***
  508. 39010 POKES+4,16:POKES+11,32:READNT,DR
  509. 39020 T=TI+12*DR:POKES,HF%(NT):POKES+1,LF%(NT)
  510. 39025 POKES+7,HF%(NT):POKES+8,LF%(NT):POKES+11,33:POKE S+4,17
  511. 39030 RETURN
  512. 39997 REM ***                       ***
  513. 39998 REM *** COLOURS (#,CHAR)      ***
  514. 39999 REM ***                       ***
  515. 40000 DATA 12,"[152]",6,"",2,"",11,"[151]",5,"",10,"[150]",4,"[156]",14,"[154]",9,"[149]",1,""
  516. 40010 DATA 16,"[144]"
  517. 40020 REM ***                       ***
  518. 40021 REM *** NOTE VALUES           ***
  519. 40022 REM ***                       ***
  520. 40030 DATA 0,0,4,251,5,152,6,71,7,12,7,119,8,97,9,104,9,247,10,143,11,48
  521. 40040 REM ***                       ***
  522. 40041 REM *** RULE BRITANNIA!       ***
  523. 40042 REM ***                       ***
  524. 40045 DATA 7,2,0,1,7,1,8,1,8,1,0,1,7,1,8,1.5,7,.5,6,1,5,1,4,3,0,1
  525. 40046 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,3,0,4
  526. 40050 DATA 2,1,5,2,5,2,5,.5,6,.5,7,.5,8,.5,10,1,5,1,6,3,7,.5,8,.5,7,2,0,1,2,1
  527. 40060 DATA 5,.5,6,.5,5,.5,6,.5,7,.5,8,.5,7,.5,8,.5,10,1,6,1,7,1,6,1
  528. 40061 DATA 5,1,6,.5,7,.5,6,1,5,1,4,3,2,1
  529. 40070 DATA 4,1,2,1,6,1,4,1,10,1,9,.5,7,.5,6,1,5,1,4,2,3,1,2,1,2,2,0,2
  530. 40080 DATA 5,2,5,1.5,2,.5,3,1,1,1,0,1,5,1,8,1,7,1,6,1,5,1,4,2,0,1,6,1
  531. 40090 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,2,0,2
  532. 41000 DATA 7,2,0,1,7,1,8,1,8,1,0,1,7,1,8,1.5,7,.5,6,1,5,1,4,3,0,1
  533. 41010 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,3,0,100
  534.